// 需求：传入什么类型就返回什么类型的数据
/* function id(value: number): number {
  return value
} */
// const r = id(8)

/* function id(value: number | string): number | string {
  return value
} */

/* function id(value: any): any {
  return value
}
const r = id('8') */

// T 表示泛型变量
// 定义的时候不确定 T 是什么类型
function id<T>(value: T): T {
  return value
}
// 使用的时候可以通过参数传递过去一个确定的类型
// const r = id<number>(10)
// const r = id<string>('test')
// const r = id<string[]>(['a', 'b'])

// 其实也可以省略 <number>，因为它会根据实参来推导出泛型是什么
// let num = 10
// const r = id(num)
// let str = 'test'
// const r = id(str)

const r = id(['a', 'b'])

export {}
